import type { InjectionKey, ComputedRef, Ref } from 'vue';
import { createContext, useContext } from '@/hooks/core/useContext';

export interface PageContextProps {
	contentHeight: ComputedRef<number>;
	pageHeight: Ref<number>;
	setPageHeight: (height: number) => Promise<void>;
}

const key: InjectionKey<PageContextProps> = Symbol();

export function createPageContext(context: PageContextProps) {
	return createContext<PageContextProps>(context, key, { native: true });
}

export function usePageContext() {
	return useContext<PageContextProps>(key);
}
